﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;

namespace NegevGas.Core
{//{
   public class LayoutModulesConfiguration
  {
//        // Fields
      private readonly string _layoutId;

      // Methods
      public LayoutModulesConfiguration(string layoutId)
      {
          this._layoutId = layoutId;
      }

//        public string[] GetModules()
//        {
//            List<string> result = new List<string> { "בחר מרשימה" };
//            //using (SqlCommand select = ConfigSqlHelper.Instance.Connection.CreateCommand())
//            //{
//            //    select.CommandText = "SELECT DISTINCT ModuleName FROM PropertyCollection";
//            //    using (SqlDataReader reader = select.ExecuteReader())
//            //    {
//            //        while (reader.Read())
//            //        {
//            //            result.Add(reader["ModuleName"].ToString());
//            //        }
//            //    }
//            //}
//            return result.ToArray();
//        }

//        public ModuleConfig GetProperties(string moduleName)
//        {
//            ModuleConfig result = this.GetPropertyDefinitions(moduleName);
//            //using (SqlCommand select = ConfigSqlHelper.Instance.Connection.CreateCommand())
//            //{
//            //    select.CommandText = string.Format("SELECT Id, PropertyId, Value FROM ModulesConfiguration WHERE LayoutId=@LayoutId AND PropertyId IN (SELECT Id FROM PropertyCollection WHERE ModuleName = @ModuleName)", new object[0]);
//            //    select.Parameters.Add(new SqlParameter("@LayoutId", this._layoutId));
//            //    select.Parameters.Add(new SqlParameter("@ModuleName", moduleName));
//            //    using (SqlDataReader reader = select.ExecuteReader())
//            //    {
//            //        while (reader.Read())
//            //        {
//            //            KeyValuePair<string, ConfigProperty> prop = (from x in result
//            //                                                         where x.Value._definition.Id == reader["PropertyId"].To<int>()
//            //                                                         select x).Single<KeyValuePair<string, ConfigProperty>>();
//            //            prop.Value._id = reader["Id"].To<int>();
//            //            prop.Value.SetValue(reader["Value"].ToString());
//            //        }
//            //    }
//            //}
//            return result;
//        }

//        //public DataSet GetPropertiesToDataSet(Dictionary<string, ConfigProperty> properties)
//        //{
//        //    DataSet ds = new DataSet("Config");
//        //    //ds.Tables.Add("ModuleConfig");
//        //    //DataTable dt = ds.Tables["ModuleConfig"];
//        //    //foreach (KeyValuePair<string, ConfigProperty> item in properties)
//        //    //{
//        //    //    DataColumn <>g__initLocal5 = new DataColumn(item.Value.Name) {
//        //    //        DefaultValue = item.Value.DefaultValue,
//        //    //        Caption = item.Value.Alias
//        //    //    };
//        //    //    DataColumn dc = <>g__initLocal5;
//        //    //    dt.Columns.Add(dc);
//        //    //}
//        //    //DataRow row = dt.NewRow();
//        //    //foreach (KeyValuePair<string, ConfigProperty> item in properties)
//        //    //{
//        //    //    row.SetField<string>(item.Value.Name, item.Value.Value.ToString());
//        //    //}
//        //    //dt.Rows.Add(row);
//        //    return ds;
//        //}

//        //private ModuleConfig GetPropertyDefinitions(string moduleName)
//        //{
//        //    bool useModuleFilter = true;
//        //    ModuleConfig result = new ModuleConfig();
//        //    if (string.IsNullOrEmpty(moduleName))
//        //    {
//        //        useModuleFilter = false;
//        //    }
//        //    //using (SqlCommand select = ConfigSqlHelper.Instance.Connection.CreateCommand())
//        //    //{
//        //    //    select.CommandText = string.Format("SELECT Id, ModuleName, Name, Alias, Type, DefaultValue, PropertyGroup FROM PropertyCollection{0} ORDER BY PropertyGroup", useModuleFilter ? " WHERE ModuleName=@ModuleName" : string.Empty);
//        //    //    select.Parameters.Add(new SqlParameter("@LayoutId", this._layoutId));
//        //    //    if (useModuleFilter)
//        //    //    {
//        //    //        select.Parameters.Add(new SqlParameter("@ModuleName", moduleName));
//        //    //    }
//        //    //    using (SqlDataReader reader = select.ExecuteReader())
//        //    //    {
//        //    //        while (reader.Read())
//        //    //        {
//        //    //            ConfigPropertyDefinition <>g__initLocal6 = new ConfigPropertyDefinition {
//        //    //                Id = reader["Id"].To<int>(),
//        //    //                ModuleName = reader["ModuleName"].ToString(),
//        //    //                Name = reader["Name"].ToString(),
//        //    //                Alias = reader["Alias"].ToString(),
//        //    //                Type = (ConfigPropertyType) Enum.Parse(typeof(ConfigPropertyType), reader["Type"].ToString()),
//        //    //                Group = reader["PropertyGroup"].ToString()
//        //    //            };
//        //    //            ConfigPropertyDefinition def = <>g__initLocal6;
//        //    //            def.SetDefaultValue(reader["DefaultValue"].ToString());
//        //    //            result.Add(string.Format(def.Name, new object[0]), new ConfigProperty(def, 0, def.DefaultValue.ToString()));
//        //    //        }
//        //    //    }
//        //    //}
//        //    return result;
//        //}

//        //public void RegisterPropertyDefinition(string moduleName, string propertyName, string propertyAlias, ConfigPropertyType propertyType)
//        //{
//        //    this.RegisterPropertyDefinition(moduleName, propertyName, propertyAlias, propertyType, string.Empty);
//        //}

//        //public void RegisterPropertyDefinition(string moduleName, string propertyName, string propertyAlias, ConfigPropertyType propertyType, object defaultValue)
//        //{
//        //    this.RegisterPropertyDefinition(moduleName, propertyName, propertyAlias, propertyType, string.Empty, defaultValue);
//        //}

//        public void RegisterPropertyDefinition(string moduleName, string propertyName, string propertyAlias, ConfigPropertyType propertyType, string group)
//        {
//            object defaultValue = null;
//            switch (propertyType)
//            {
//                case ConfigPropertyType.Text:
//                    defaultValue = string.Empty;
//                    break;

//                case ConfigPropertyType.Number:
//                    defaultValue = 0;
//                    break;

//                case ConfigPropertyType.Boolean:
//                    defaultValue = true;
//                    break;
//            }
//            this.RegisterPropertyDefinition(moduleName, propertyName, propertyAlias, propertyType, defaultValue);
//        }

//        //public void RegisterPropertyDefinition(string moduleName, string propertyName, string propertyAlias, ConfigPropertyType propertyType, string group, object defaultValue)
//        //{
//        //    //using (SqlCommand cmd = ConfigSqlHelper.Instance.Connection.CreateCommand())
//        //    //{
//        //    //    cmd.CommandText = "SELECT Id FROM PropertyCollection WHERE ModuleName = @ModuleName AND Name = @Name";
//        //    //    cmd.Parameters.Add(new SqlParameter("@ModuleName", moduleName));
//        //    //    cmd.Parameters.Add(new SqlParameter("@Name", propertyName));
//        //    //    if (cmd.ExecuteScalar() == null)
//        //    //    {
//        //    //        using (SqlCommand insert = ConfigSqlHelper.Instance.Connection.CreateCommand())
//        //    //        {
//        //    //            insert.CommandText = "INSERT INTO PropertyCollection(ModuleName, Name, Alias, Type, DefaultValue, PropertyGroup) VALUES(@ModuleName, @Name, @Alias, @Type, @DefaultValue, @Group)";
//        //    //            insert.Parameters.Add(new SqlParameter("@ModuleName", moduleName));
//        //    //            insert.Parameters.Add(new SqlParameter("@Name", propertyName));
//        //    //            insert.Parameters.Add(new SqlParameter("@Alias", propertyAlias));
//        //    //            insert.Parameters.Add(new SqlParameter("@Type", propertyType.ToString()));
//        //    //            insert.Parameters.Add(new SqlParameter("@DefaultValue", defaultValue));
//        //    //            insert.Parameters.Add(new SqlParameter("@Group", group));
//        //    //            insert.ExecuteNonQuery();
//        //    //        }
//        //    //    }
//        //    //}
//        //}

//        //public void SetProperty(ConfigProperty property)
//        //{
//        //    //using (SqlCommand cmd = ConfigSqlHelper.Instance.Connection.CreateCommand())
//        //    //{
//        //    //    SqlParameter value = new SqlParameter("@Value", property.Value);
//        //    //    if (property.Id > 0)
//        //    //    {
//        //    //        cmd.CommandText = "SET NOCOUNT ON; UPDATE ModulesConfiguration SET Value = @Value WHERE Id = @Id";
//        //    //        cmd.Parameters.Add(new SqlParameter("@Id", property.Id));
//        //    //    }
//        //    //    else
//        //    //    {
//        //    //        cmd.CommandText = "SET NOCOUNT ON; INSERT INTO ModulesConfiguration(LayoutId, PropertyId, Value) VALUES(@LayoutId, @PropertyId, @Value); SELECT @@IDENTITY AS NewID;";
//        //    //        cmd.Parameters.Add(new SqlParameter("@LayoutId", this._layoutId));
//        //    //        cmd.Parameters.Add(new SqlParameter("@PropertyId", property._definition.Id));
//        //    //    }
//        //    //    cmd.Parameters.Add(value);
//        //    //    using (SqlDataReader reader = cmd.ExecuteReader())
//        //    //    {
//        //    //        if (reader.Read())
//        //    //        {
//        //    //            property._id = reader["NewId"].To<int>();
//        //    //        }
//        //    //    }
//        //    //}
//        //}
   }


}